#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
    int age;
    struct Node *next;
} Node;

// 单指针传参，修改结构体数据
void ModifyData(Node *p)
{
    printf("ModifyData:\n");

    printf("数据: p.age = %d\n", p->age);
    printf("地址: p = %x, p->next = %x\n\n", p, p->next);

    // 在函数内定义一个新的结构体
    Node q;
    q.age = 3;
    q.next = NULL;

    // 修改数据（age，next）
    p->age = 2;
    p->next = &q;

    printf("数据: p.age = %d\n", p->age);
    printf("地址: p = %x, p->next = %x\n\n", p, p->next);

    printf("数据: q.age = %d\n", q.age);
    printf("地址: q = %x, q->next = %x\n\n", &q, q.next);
}

int main()
{
    Node p;
    p.age = 1;
    p.next = NULL;

    printf("main():\n");
    printf("数据: p.age = %d\n", p.age);
    printf("地址: p = %x, p->next = %x\n\n", &p, p.next);

    ModifyData(&p);

    printf("main():\n");
    printf("数据: p.age = %d\n", p.age);
    printf("地址: p = %x, p->next = %x\n\n", &p, p.next);

    return 0;
}
